package com.ykt.common.utils;

import com.jfinal.plugin.activerecord.Page;
import com.ykt.common.utils.page.PageData;
import com.ykt.common.utils.page.PageParam;

import java.util.List;

/**
 * 分页工具
 * @author long.hua
 * @version 1.0.0
 * @since 2016-01-17 20:04
 */
public class PageUtil {

    public static <T> boolean isNull(Page<T> page){
        return page == null || page.getList() == null;
    }

    /**分页对象、分页数据都不为Null，且分页数据不为空*/
    public static <T> boolean isNotEmpty(Page<T> page){
        return page == null || page.getList() == null || page.getList().isEmpty();
    }

    /**分页对象或分页数据为Null*/
    public static <T> boolean isNull(PageData<T> page){
        return page == null || page.getPageData() == null;
    }

    /**分页对象、分页数据都不为Null，且分页数据不为空*/
    public static <T> boolean isNotEmpty(PageData<T> page){
        return !(page == null || page.getPageData() == null || page.getPageData().isEmpty());
    }


    /**
     * 取得List的第N页的DataPage对象
     *
     * @param list     要分页的list
     * @param pageNo   第几页，第一页为1
     * @param pageSize 每页记录数
     * @return List 一页的数据
     */
    public static <T> PageData<T> pageList(List<T> list, int pageNo, int pageSize) {
        return PageData.pageList(list, pageNo, pageSize);
    }


    public static <T> PageData<T> to(Page<T> page){
        if(page == null){
            return null;
        }

        // 避免报除数不能为0异常和负数
        if(page.getPageSize() < 1){
            return null;
        }

        return new PageData<>(page.getPageNumber(), page.getPageSize(), page.getTotalRow(), page.getList());
    }

    public static <T> PageData<T> to(PageParam<T> page){
        if(page == null){
            return null;
        }

        // 避免报除数不能为0异常和负数
        if(page.getPageSize() < 1){
            return null;
        }

        return new PageData<>(page.getPageNo(), page.getPageSize(), page.getDataTotal(), null);
    }
}
